# Server Fleet Analysis — 26 Jul 2026

**Sources:** GLM-5.2 + Grok multi-server inventory (deduplicated)  
**Snapshot:** 2026-07-26 · All 4 hosts SSH OK · Reverse proxy: **Caddy only** (no nginx / traefik / Dokploy)

---

## 1. Resources

| Server | Host / IP | CPU | Idle | RAM used / total | RAM avail | Disk used / total | Free | Load (1/5/15) | Uptime |
|--------|-----------|-----|------|------------------|-----------|-------------------|------|---------------|--------|
| hostinger | srv913114 · `ssh hostinger` | 2c | ~78% | 0.6–1.0G / 7.8G | ~7G | 31G / 96G (33%) | 65G | 0.48 / 0.13 / 0.04 | 20d |
| contabo | vmi2860834 · 149.102.150.185 | 8c | ~98% | 2.3–2.4G / 23G | ~20G | 89G / 388G (23%) | 299G | 1.33 / 0.53 / 0.25 | 4d |
| hetzner | debian-16gb-hel1-1 · 46.62.228.173 | 8c | ~89% | 5.6–5.8G / 15G | ~9.5G | 48G / 301G (17%) | 241G | 0.16 / 0.24 / 0.11 | 72d |
| ai-developer | ubuntu · 213.199.36.17 | 6c | ~79% | 1.2G / 11G | ~10G | 45–46G / 97G (47%) | 52G | 1.25 / 0.84 / 0.48 | 151–153d |

**Notes:** Light load fleet-wide. Contabo has most free capacity. Hetzner uses most RAM (PocketBase ×3, TTS ~3.7G, IELTS, Docker). ai-developer: no swap. hostinger CPU spike was brief/sys — real idle (load 0.04).

---

## 2. Reverse proxy (Caddy)

| Server | Binary | Admin API | Config |
|--------|--------|-----------|--------|
| hostinger | `/usr/bin/caddy` | 127.0.0.1:2019 | single `/etc/caddy/Caddyfile` |
| contabo | `/usr/bin/caddy` | 127.0.0.1:2019 | main + `import /etc/caddy/sites/*.caddy` |
| hetzner | `/root/.local/bin/caddy` | 127.0.0.1:2019 | single large Caddyfile |
| ai-developer | `/usr/bin/caddy` | default | single Caddyfile (many `.bak`) |

---

## 3. Server roles

| Server | Primary role |
|--------|----------------|
| hostinger | Lightweight landing / captcha assets; spare capacity |
| contabo | Education/gaming hub (master1 banks, dentist, tourism, Outline, listmonk, umami, Activepieces) |
| hetzner | Medical + IELTS production (promedic1.com family, ielts.fast) |
| ai-developer | SPLE exam, OpenClaw, prompts library, SMM automation; long-uptime utility |

---

## 4. Containers

### hostinger — empty
Docker installed, 0 containers. Compose at `/root/picoclaw/docker-compose.yml` not running. n8n inactive.

### contabo — 11 containers (all healthy)

| Container | Port | Role |
|-----------|------|------|
| outline | 127.0.0.1:3100 | Wiki → ui.master1.vip |
| outline-db / outline-redis | internal | Outline deps |
| umami-app / umami-db | 127.0.0.1:3003 | Analytics → umami.promedic1.com |
| listmonk-app / listmonk-db | 127.0.0.1:9000 | Newsletter → listmonk.addict.mom |
| root-activepieces-1 | 127.0.0.1:8080 | Automation → active.addict.mom |
| root-postgres-1 / root-redis-1 | internal | Activepieces deps |
| agent-browserless | 127.0.0.1:3006 | Browser → agent.addict.mom |

**Native/PM2:** dentist :8085, pocketbase :8090+:8092, Next tourism :3015, master1 telegram, OpenClaw :18789

### hetzner — 3 containers

| Container | Port | Role |
|-----------|------|------|
| webapp_ielts | 127.0.0.1:8003→3000 | IELTS webapp |
| the-ielts | 127.0.0.1:8094→80 | the.ielts.fast |
| uptime-kuma | 127.0.0.1:3002→3001 | Monitoring |

**Native:** PocketBase 8090–8092, uvicorn :8000, flask TTS :5000  
**Not running** (compose under /opt): Chatwoot, OpenHands, Umami, Prometheus/Loki

### ai-developer — 1 container

| Container | Role |
|-----------|------|
| smm_automation | Social automation — **no public domain** |

---

## 5. Live domains & apps

### hostinger (1)

| Domain | Backend | Type | Description |
|--------|---------|------|-------------|
| hostinger.addict.best | `/var/www/hostinger.addict.best` | static | Landing / captcha assets |

**Orphan dirs (no Caddy):** taibaat*, fast-diet*, social-hub; historical: diaa.master1.vip, taibaat.master1.vip, fast.promedic1.com, n8n host

### contabo (≈22) — 149.102.150.185

| Domain | Backend | Status | Description |
|--------|---------|--------|-------------|
| master1.vip | `/var/www/master1.vip/dist` + PB :8090 + telegram :8086 | Running | Education umbrella hub |
| activation.master1.vip | `/root/activation.master1` + PB | Running | Activation codes |
| banks.master1.vip | `/root/banks-master1` | Running | Master1 banks static |
| bio.master1.vip | `/var/www/biology-exams` | Running | Biology exams |
| bank.master1.vip | `/var/www/biology-banks` | Running | Biology banks |
| math.master1.vip | `/var/www/math-final` | Running | Math exams |
| arabic.master1.vip | `/var/www/Arabic-banks` | Running | Arabic banks |
| french.master1.vip | `/var/www/french-exams` | Running | French exams |
| eng.master1.vip | `/var/www/English-banks` | Running | English banks |
| physics.master1.vip | `/var/www/physics-bank-final` | Running | Physics bank |
| share.master1.vip | node :4005 + static | Running | File share |
| ui.master1.vip | Outline :3100 | Running | Team wiki (Outline) |
| auto.master1.vip | OpenClaw :18789 | Running | VIP orchestrator |
| zeroclaw.addict.best | OpenClaw :18789 | Running | ZeroClaw gateway alias |
| dentist.promedic1.com | node :8085 + PB :8092 | Running | Dentist IDE (PM2) |
| tourism.cheap | Next.js :3015 (`/root/guardian-misr-tourism`) | Running | Guardian Misr tourism (www→apex) |
| active.addict.mom | Activepieces :8080 | Running | Workflow automation |
| agent.addict.mom | browserless :3006 | Running | Headless browser agent |
| listmonk.addict.mom | listmonk :9000 | Running | Newsletter / campaigns |
| umami.promedic1.com | umami :3003 | Running | Privacy analytics |
| cardx.addict.best | `/var/www/cardx.addict.best` | static | Card game landing |
| duel.addict.best | `/var/www/duel.addict.best` | static | Duel game landing |
| edugamer.addict.best | `/var/www/edugamer.addict.best` | static | Edu gamer landing |
| index.addict.best | `/var/www/index.addict.best` | static | Index landing |
| contabo149.addict.best | `/var/www/contabo149.addict.best` | static | Server status landing |

**tourism.cheap detail:** Contabo · Next.js v16.2.10 · Caddy `/etc/caddy/sites/tourism.cheap.caddy` → 127.0.0.1:3015 · TLS admin@ielts.fast

**Orphan www (no domain):** chemistry.master1.vip, chem-final, hero-master1, math-zoro, physics-banks-legacy, biology-egypt-legacy, French-oppus, kimi-general, z-ai-apps, social-hub  
**Disabled:** banks.master1.vip.caddy.disabled.*, master1.vip.bak.*

### hetzner (≈17) — 46.62.228.173

| Domain | Backend | Status | Description |
|--------|---------|--------|-------------|
| ielts.fast | PB :8090 + uvicorn :8000 + TTS :5000 + docker :8003 | Running | IELTS production platform |
| the.ielts.fast | docker the-ielts :8094 | Running | IELTS companion app |
| listening.ielts.fast | `/var/www/ielts-listening-exams/dist` | static | Listening practice |
| exercise.ielts.fast | `/var/www/ielts-exercise/dist` | static | Exercise drills |
| reading.ielts.fast | `/var/www/ielts-reading` | static | Reading practice |
| promedic1.com | `/var/www/promedic1.com` | static | Medical brand home |
| clinical.promedic1.com | `/var/www/clinical` | static | Clinical content |
| drugs.promedic1.com | `/var/www/drugs-promedic1` | static | Drugs reference |
| diet.promedic1.com | PB :8091 + `/var/www/diet-plans/dist` | Running | Diet plans + backend |
| coach.promedic1.com | PB :8092 + `/var/www/coach.promedic1.com` | Running | Coach app + backend |
| female.promedic1.com | `/var/www/female-promedic1` | static | Female health content |
| activation.promedic1.com | `/var/www/activation.promedic1.com` | static | Activation portal |
| pocketcoach.promedic1.com | PB :8092 | Running | Coach PocketBase API |
| pocketdiet.promedic1.com | PB :8091 | Running | Diet PocketBase API |
| credo.promedic1.com | `/var/www/credentials-hub` | static | Credentials hub |
| dom.promedic1.com | `/var/www/domains-hub` | static | Domains hub |
| spiro.promedic1.com | `/var/www/spiro.promedic1.com` | static | Spiro content |
| hetziner.addict.best | `/var/www/hetziner.addict.best` | static | Server status page |

**Systemd:** ielts-pocketbase :8090, diet-pocketbase :8091, coach-pocketbase :8092, ielts-analysis :8000, ielts-tts :5000  
**Broken:** Caddy routes to **:3005** (not listening)  
**Orphans:** writing-task2, server-panel, social-hub; /opt chatwoot, OpenHands, umami, prometheus, loki not running  
**Stale certs (no site block):** media.contabo1.tourism.cheap, media.hetziner.tourism.cheap

### ai-developer (5) — 213.199.36.17

| Domain | Backend | Status | Description |
|--------|---------|--------|-------------|
| prodemy.promedic1.com | `/root/sple-exam-app` | static | SPLE exam app |
| openclaw.addict.best | OpenClaw :18789 | Running | OpenClaw gateway |
| prompting.addict.best | python :8790 (`/var/www/prompting-navigator`) | Running | Prompting navigator |
| prompts.addict.best | `/var/www/prompts-addict` | static | Prompts library |
| contabo213.addict.best | `/var/www/contabo213.addict.best` | static | Server landing |

**Internal (no domain):** MySQL :3306, Redis :6379, PHP 8.1-FPM, smm_automation container, auto_responder.py :8081  
**Retired:** zag.promedic1.com (files remain `/var/www/zag-antibiogram`)

---

## 6. Health snapshot

| Check | hostinger | contabo | hetzner | ai-developer |
|-------|-----------|---------|---------|--------------|
| SSH | OK | OK | OK | OK |
| Caddy | OK | OK | OK | OK |
| Docker | OK (empty) | OK | OK | OK |
| Containers | 0 | 11/11 up | 3/3 up | 1 up |
| Disk | Low 33% | Low 23% | Low 17% | Medium 47% |
| RAM | Low | Very low | Medium | Low |
| Risk | Underused; orphan www | zombie process; orphan www | swap 723M; dead :3005; TTS RAM | no swap; many Caddy .bak |

---

## 7. Verdict

All four servers reachable; Caddy is the sole reverse proxy. **Contabo** and **Hetzner** carry production load. **Hostinger** nearly idle. **ai-developer** stable with unmapped services and retired `zag` on disk.

**Next options:** (1) clean orphan domains/paths · (2) fix Hetzner :3005 dead routes · (3) export inventory on a server
